今天不寫程式來畫圖,想當年我高中美術60分,後來才發現有時候一張圖勝過千言萬語,可惜我只會畫蝌蚪人了。
如果對這問題很有興趣的人可以直接看這篇文就好:分布式一致性与共识算法
前幾天看了這篇文,覺得只花一個晚上認真講也不會比他好,所以我決定畫圖當懶人包,如果覺得這篇文比較深奧難懂,只想瞭解個概念那就來看看今天的文吧。
拜占庭將軍問題也就是在分散式系統中,不對每個節點的行為做任何限制的話,如何排除不正常的節點行為讓其他正常節點能不受影響達成共識的問題。根據參考資料這也是分散式領域中最嚴格、最複雜的容錯模型。
可以類比一下,在成千上萬節點且不限制節點行為的分散式系統:
在這種情況下,如果無法排除有問題的節點,則共識無法達成:
對區塊鏈網路來說,如果不能排除惡意節點的干擾確保正常節點行為一致,網路也就無法運作。
後果很嚴重阿。
在比特幣論文中,解決方法就是我們在Day6所提到的POW啦。
既然講到了這裡,那也提一下POS。
POS(Proof-of-Stake)是一種區塊鏈達成共識的新方法,POS的相關技術還在發展中,目前有很多不同的技術,概念是不再依照算力來達成共識,而是依照當前持有者的幣會去累積幣齡,而幣齡的累積會一直到幣去參與產生區塊才會轉換成利息。至於程式實際運作上是如何去達成共識的我還沒仔細研究。POS很大的一個好處在於不像之前的POW一樣依賴算力,白話一點就是維持運作不會太耗電。
《Bitcoin: A Peer-to-Peer Electronic Cash System》
https://bitcoin.org/bitcoin.pdf
分布式一致性与共识算法
https://draveness.me/consensus)